import Vue from 'vue'
import VueRouter from 'vue-router'
// 布局
// import Layout from '@/Layout/Index'

Vue.use(VueRouter)
// 公共页面路由
import CommonRoter from '@/router/CommonRoter'
// 后台页面路由
import BackstageRoter from '@/router/BackstageRoter'
// 前台页面路由
import FrontDesk from '@/router/FrontDesk'
// 定义路由
const router = new VueRouter({
  mode: 'history',
  routes: [
    ...CommonRoter, // 公共页面路由
    ...FrontDesk, // 前台页面路由
    ...BackstageRoter // 后台页面路由
  ]
})
// 解决ElementUI导航栏中的vue-router在3.0版本以上重复点菜单报错问题
// 对VueRouter原型链上的push、replace方法进行重写，这样就不用每次调用方法都要加上catch
const originalPush = VueRouter.prototype.push
VueRouter.prototype.push = function push(location, onResolve, onReject) {
  if (onResolve || onReject) return originalPush.call(this, location, onResolve, onReject)
  return originalPush.call(this, location).catch(err => err)
}
// 挂载路由导航守卫
// 为路由添加一个router.beforeEach导航守卫
// 挂载路由导航守卫
// 为路由添加一个router.beforeEach导航守卫
router.beforeEach((to, from, next) => {
  /**
   * to：将要访问的路径
   * from：代表从那个路径来的（上级路径）
   * next：是一个函数，表示放行
   * 1：next() // 放行
   * 2：next('/login') // 强制跳转到登陆
   */
  // 如果用户访问的登录页，直接放行
  if (to.path === '/choose') {
    return next()
  }
  // 从sessionStorage中获取token
  // const tokenStr = window.sessionStorage.getItem('Token')
  // console.log('tokenStr', tokenStr)
  // 没有token强制跳到登录页
  // if (!tokenStr) return next('/choose')
  next()
})

export default router
